//
// Created by china on 25-1-4.
//

#ifndef CHAT_CHATSERVER_H
#define CHAT_CHATSERVER_H

#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
#include <muduo/base/Logging.h>
#include <json.hpp>
#include <functional>
#include <string>
#include "ChatService.h"
#include "db.h"
#include "reflect_json.hpp"

using namespace muduo;
using namespace muduo::net;
using namespace std::placeholders;


class ChatServer {
public:
    //初始化服务器
    ChatServer(EventLoop* loop,
               const InetAddress& listenAddr,
               const string& nameArg);
    //服务器启动
    void start();

private:
    //上报连接相关信息的回调函数
    void onConnection(const TcpConnectionPtr&);
    //上报读写事件相关信息的回调函数
    void onMessage(const TcpConnectionPtr&,Buffer*,Timestamp);

private:
    TcpServer _server;//组合muduo库，实现服务器功能的类对象
    EventLoop *_loop;//指向事件循环对象的指针

    //解析 json 用
    Json::Reader reader;
};


#endif //CHAT_CHATSERVER_H
